home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / enigma / earcd / sviluppo / svilupp2 / amphn192.lha / src / asl.c < prev    next >
C/C++ Source or Header  |  1996-11-16  |  2KB  |  75 lines

  1. /* asl.c -- function for getting filenames */
  2.  
  3. #ifndef ASL_C
  4. #define ASL_C
  5.  
  6. #include <stdio.h>
  7. #include <string.h>
  8. #include <time.h>
  9.  
  10. #include <clib/asl_protos.h>
  11. #include <clib/intuition_protos.h>
  12. #include <libraries/asl.h>
  13.  
  14. #include "codec.h"
  15. #include "asl.h"
  16.  
  17. extern struct Window *PhoneWindow;
  18. /*    __chip extern UBYTE waitPointer[];  */
  19.  
  20. /* Fills out szBuffer with the filename/path selected by the user from
  21.    a file requester.   szMessage can be used to change the title string */
  22. int FileRequest(char *szMessage, char *szBuffer, char *szOKMessage, char *szDefaultDirParam, char *szDefaultFile, BOOL BSaveIt)
  23. {
  24.     int rvalue = TRUE;
  25.     struct FileRequester *fr;
  26.     LONG lFlags = FILF_NEWIDCMP;
  27.     static char szDefaultDefaultDir[300] = "\0";
  28.     char * szDefaultDir;
  29.     
  30.     if (szBuffer == NULL)          return(FALSE);
  31.     if (BSaveIt == TRUE)           lFlags        |= FILF_SAVE;
  32.     if (szMessage == NULL)         szMessage     = "Select a file!";
  33.     if (szOKMessage == NULL)       szOKMessage   = "OK";
  34.     if (szDefaultDirParam == NULL)     szDefaultDir  = szDefaultDefaultDir; else szDefaultDir = szDefaultDirParam;
  35.     if (szDefaultFile == NULL)     szDefaultFile = "";
  36.        
  37.     struct TagItem frtags[] =
  38.     {
  39.         ASL_Hail,    (ULONG)szMessage,
  40.         ASL_Height,    185,
  41.         ASL_Width,    320,
  42.         ASL_LeftEdge,    0,
  43.         ASL_TopEdge,    15,
  44.         ASL_Dir,        (ULONG)szDefaultDir,
  45.         ASL_File,       (ULONG)szDefaultFile,
  46.         ASL_OKText,    (ULONG)szOKMessage,
  47.         ASL_FuncFlags,  lFlags,
  48.         ASL_CancelText,    (ULONG)"Cancel",
  49.         ASL_Window,    PhoneWindow,
  50.         TAG_DONE
  51.     };
  52.     
  53.     fr = (struct FileRequester *) AllocAslRequest(ASL_FileRequest, frtags);    
  54.     if (fr == NULL) return(FALSE);
  55.     
  56. /*    SetPointer(PhoneWindow, (UWORD *)waitPointer, 16, 16, -6, 0); */
  57.     if (AslRequest(fr, NULL))
  58.     {
  59.         *szBuffer = '\0';
  60.         strcpy(szBuffer,fr->rf_Dir);
  61.  
  62.         /* set default dir for next time */
  63.         Strncpy(szDefaultDefaultDir,fr->rf_Dir,sizeof(szDefaultDefaultDir));
  64.         
  65.         if ((strlen(szBuffer) > 0)&&(szBuffer[strlen(szBuffer)-1] != '/')&&
  66.             (szBuffer[strlen(szBuffer)-1] != ':')) strcat(szBuffer,"/");
  67.         strcat(szBuffer,fr->rf_File);
  68.     }
  69.     else rvalue = FALSE;
  70. /*    ClearPointer(PhoneWindow); */
  71.  
  72.     FreeAslRequest(fr);
  73.     return(rvalue);
  74. }
  75. #endif